readlink() on /proc/<pid>/exe can have results like:
/usr/bin/gnome-keyring-daemon.#prelink#.5DFZsF (deleted)
/usr/bin/gnome-session (deleted)
To find gnome-session in a more robust way, read /proc/<pid>/cmdline
instead.
https://bugzilla.gnome.org/show_bug.cgi?id=616706
if not stat.st_uid == myuid:
continue
try:
- exe = os.readlink(piddir + '/exe')
- except OSError, e:
+ f = open(piddir + "/cmdline")
+ command = f.read()
+ f.close()
+ except IOError, e:
continue
- if os.path.basename(exe) != 'gnome-session':
+ # /proc/cmdline is separated and terminated by NULs
+ command = command.split("\x00")[0]
+ command = os.path.basename(command)
+ if command != 'gnome-session':
continue
try:
f = open(os.path.join(piddir, 'environ'))